home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / telecomm / fnorddel / fn132man.zoo / chapter.08 < prev    next >
Text File  |  1991-09-02  |  88KB  |  1,837 lines

  1.  
  2.  
  3. Chapter 8:  Networking                                                    96
  4.  
  5.  
  6.  
  7.  
  8. 8  Networking
  9.  
  10.  
  11.    Fnordadel  has the  ability  to  __network__,  that is,  to  share  mail,
  12. rooms  and  files,  with  other Fnordadels  and  other  Citadels  supporting
  13. the  ``C86Net'' style  of  networking.    Since  Fnordadel is  a  descendant
  14. of Citadel-86,  it retains compatibility  with Citadel-86 networking  (well,
  15. mostly---see Section  8.6 [Networking with  Citadel-86], page  121).   Other
  16. Citadel  variants supporting  C86Net include  STadel (Fnordadel's  immediate
  17. ancestor), Citadel-68K for the Amiga, Fortress, and some others.
  18.  
  19.    When two  Citadels network,  they follow  a standard procedure.    First,
  20. one must  call the other.   Fnordadel  can be induced to  make net calls  by
  21. means of  #events and  #polling; read further  in this  chapter for more  on
  22. these.   Fnordadel can also  receive net calls from  any system at any  time
  23. (assuming there's  no user logged in,  of course.)   When two Citadels  have
  24. connected for  the purposes  of networking,  they first  must stabilize  the
  25. call, the caller (which starts out as the  __master__) must identify itself,
  26. and passwords, if  you use them, must be  exchanged.  Then the  caller makes
  27. a  series of  requests;  these can  be  for room  sharing,  file sending  or
  28. requesting, mail delivery,  or whatever.   After the caller has made  all of
  29. its requests,  __role reversal__  is performed;  this essentially makes  the
  30. caller and the  callee switch roles in  mid-call, leaving the callee as  the
  31. master and the caller as the __slave__.  The  callee now issues any requests
  32. that it has to make  in the same manner as the caller did.   When the callee
  33. is finished, the two systems hang up.
  34.  
  35.    Simple, huh?   Well, as it happens,  this simple system has  proven quite
  36. flexible and useful;  networking has become  a fairly large part of  Citadel
  37. activity.  So it's only natural that it's had  a large amount of programming
  38. effort devoted to it, and  thus, a lot of stuff we've got to tell  you about
  39. it.  So hang on to your hat, and off we go!
  40.  
  41.  
  42.  
  43. 8.1  Networking Configuration
  44.  
  45.    There is a  whole whack of things  that either need to  be set or can  be
  46. set in `ctdlcnfg.sys' to control Fnordadel's networking ability.   We divide
  47. these into two groups:  required parameters and optional ones.   Please note
  48. that there is  no way to ``turn off''  Fnordadel's networking ability.   You
  49. may choose not  to explicitly network with  any systems, but other  Citadels
  50. will still be able to call yours and send you mail, at the very least.
  51.  
  52.  
  53. 8.1.1  Required parameters
  54.  
  55.    These parameters *must* be defined properly in  `ctdlcnfg.sys' for proper
  56. networking to occur; indeed, Fnordadel will stubbornly refuse  to come up at
  57. all unless certain ones are defined.  So define all these.
  58.  
  59. #nodename  This  is a  string of  19 characters  or less.    It defines  the
  60.            name by  which your system  will be  known on the  network.   The
  61.            allowable characters in this string are:
  62.  
  63.              o Upper and lower case letters
  64.  
  65.  
  66.  
  67. Chapter 8:  Networking                                                    97
  68.  
  69.  
  70.  
  71.  
  72.              o Digits
  73.  
  74.              o Space characters (` ')
  75.  
  76.              o Any of `* _ - .'
  77.  
  78.            Spaces are equivalent  to `_' (underscore) characters;  therefore
  79.            `The_Rock'  and  `The Rock'  amount  to  the  same thing.     (We
  80.            encourage  the  use of  `_'  rather  than `  ';  aside  from  our
  81.            entirely subjective opinion  that it looks better, it  also helps
  82.            when  interfacing with  other  networks  that might  not  support
  83.            spaces in nodenames.)  We'd also like  to recommend against using
  84.            `.' in  your #nodename;  it may cause  confusion with domains  in
  85.            later versions of the software.
  86.  
  87.            We'd  like it  if  #nodenames were  kept  to nine  characters  or
  88.            less;   indeed,  configur  will  preach  at  you  a  bit  if  you
  89.            define  a #nodename  with more  than nine  characters.   This  is
  90.            mainly because  of mail routing  considerations (see Section  8.5
  91.            [Mail  Routing],   page  118);  explicitly  addressing   mail  to
  92.            systems  with  long weird  nodenames  is  a pain,  and  prone  to
  93.            error.   We'd  prefer that  you used a  short #nodename  together
  94.            with  a descriptive  #organization (see  Section 8.1.2  [Optional
  95.            parameters], page 98.)
  96.  
  97. #nodeid    This string, limited  to 19 characters, defines the unique  ID by
  98.            which your node  will be known.   It is used by the  internals of
  99.            the networking  software, so it will  never be shown directly  to
  100.            users.
  101.  
  102.            What can  this unique  string consist  of, you  ask?   Why,  it's
  103.            no more  than your  telephone number.   It  must follow a  strict
  104.            format:
  105.  
  106.                  <country code> <area code> <phone number>
  107.  
  108.            Country  codes  are  listed  in  Section   8.8  [Country  Codes],
  109.            page 123.  (Canada is `CA', and the United States  is `US'.)  The
  110.            area code  and phone number are what  you'd expect.   Punctuation
  111.            (dashes,  parentheses and so  on) are  allowed; they're  stripped
  112.            when the string  is actually used for  anything.  As an  example,
  113.            the following is secret's #nodeid:
  114.  
  115.                  #nodeid "CA (403) 425-1779"
  116.  
  117. #define sharedrooms
  118.            This variable  defines the maximum number  of rooms which may  be
  119.            shared with  any one  system on  your net-list.    The limit  has
  120.            historically been  16;  this value should  be perfectly  adequate
  121.            for  most systems.    If  you're  sharing a  lot of  rooms  (say,
  122.            you're  a major  hub system),  you'll want  to  put this  higher.
  123.            Each shared  room slot occupies  10 bytes for  each node in  your
  124.            net-list.
  125.  
  126.            Once  you've   configured  your  system   for  the  first   time,
  127.            sharedrooms  can  only  be   changed  by  running  nchange;   see
  128.  
  129.  
  130.  
  131. Chapter 8:  Networking                                                    98
  132.  
  133.  
  134.  
  135.  
  136.            `nchange.man' for  more.   Do  *not* simply change  the value  in
  137.            `ctdlcnfg.sys' and  run configur;  things will  either come to  a
  138.            screeching  halt (if  you're lucky),  or  blow up  violently  (if
  139.            you're not).
  140.  
  141. #netdir    This is the directory  in which Fnordadel will put all  the files
  142.            needed  in networking;  these  files will  include  `ctdlnet.sys'
  143.            (your net-list),  `ctdlloop.zap' (the  loop-zapper database;  see
  144.            Section 8.4.3  [The loop-zapper],  page 115),  and many files  of
  145.            a temporary  nature.   Make sure  this directory  is on a  device
  146.            with  some amount  of free  space  (i.e., don't  try  to cram  it
  147.            on  a floppy  which  has 3k  free)  because the  temporary  files
  148.            written here  can sometimes be  fairly large if you  do a lot  of
  149.            networking.
  150.  
  151.            Note that #spooldir is a synonym for #netdir.
  152.  
  153.  
  154. 8.1.2  Optional parameters
  155.  
  156.    Many of these  parameters are of the ``nice  to have, but not  absolutely
  157. necessary'' variety.   Fnordadel will try  to use reasonable defaults  where
  158. applicable.
  159.  
  160. #organization
  161.            To  make up  for short  #nodenames (see  Section 8.1.1  [Required
  162.            parameters],  page 96),  you  may define  a string  of  up to  39
  163.            characters  which  will be  used  to provide  a  slightly  better
  164.            description  of  your  system in  networked  messages.     It  is
  165.            displayed at  the end of  message headers in shared  rooms.   For
  166.            example,  let's  say  we're  running a  BBS  called  ``The  Round
  167.            Table''.   Now,  this is longer  than 9 characters,  so we  don't
  168.            want to use  it as-is for a #nodename.   So, we  define #nodename
  169.            as  `RT',  which is  easy  to remember  and  type,  and use  an
  170.            #organization like this:
  171.  
  172.                  #organization "The Round Table, Edmonton"
  173.  
  174.            The headers on messages from our board will appear like this:
  175.  
  176.                  90Jul20 8:24 pm from Biff @ RT (The Round Table, Edmonton)
  177.  
  178.            The #organization  field can  say anything,  really; some  people
  179.            like to  put witty  little sayings in  there or  whatever.   Just
  180.            keep it clean.
  181.  
  182. #domain    The #domain field  tells the system what Citadel-86-style  domain
  183.            your system belongs to.  A domain is a  group of network systems,
  184.            usually organized by geographical region, but  the grouping could
  185.            be based  on anything  at all.    If you don't  know what  domain
  186.            you're a part of, leave this field commented out  or define it to
  187.            be the empty  string (i.e.  #domain "").   You can set  the field
  188.            later.
  189.  
  190.            This field is primarily for Citadel-86  compatibility, which uses
  191.            state or  province abbreviations  as domains.    Ask around  your
  192.  
  193.  
  194.  
  195. Chapter 8:  Networking                                                    99
  196.  
  197.  
  198.  
  199.  
  200.            area to  see if  a domain exists,  and join it  if so.   If  not,
  201.            start your  own, or join  a domain from  another region.   Please
  202.            don't  put a junk  value in  this field;  leave  it blank  unless
  203.            you're joining  or starting  a real  domain.   See Section  8.5.4
  204.            [Domains], page 121.
  205.  
  206.            If  you  define a  domain,  it  will  appear in  the  headers  of
  207.            messages  originating on  your  system.    The domains  of  other
  208.            systems  will  appear  in message  headers  from  those  systems.
  209.            Continuing the example from above, with system RT,  if we define
  210.            #domain as `Alta', message headers will look like this:
  211.  
  212.                  90Jul20 8:24  pm  from Biff  @  RT.Alta (The  Round  Table,
  213.                  Edmonton)
  214.  
  215. #define receiptk
  216. #receiptdir
  217.            Since Fnordadel can  accept files sent from other systems  on the
  218.            network, we  have to tell  it how much  we're willing to  accept,
  219.            and where to put these files.
  220.  
  221.            The  variable  receiptk  should  be  defined  as  the  number  of
  222.            kilobytes which  will be  allowed to accumulate  in your  receipt
  223.            directory before Fnordadel  will refuse to accept any  more files
  224.            over the network.  Notice that this  really doesn't have anything
  225.            to do  with the amount  of free space  available on your  storage
  226.            device,  though obviously if  you run  out of  space, files  will
  227.            not be  received.   What actually  happens is  that prior to  the
  228.            receipt of a file,  Fnordadel will add up the sizes of  the files
  229.            currently in your  receipt directory and compare the  number with
  230.            your defined  receiptk;  if the addition  of the  new file  would
  231.            cause the  total amount of  used space  to exceed receiptk,  then
  232.            the file will  be refused.  The  upshot:  clean out  your receipt
  233.            directory after you receive files from other systems.
  234.  
  235.            #receiptk defaults to `100'.
  236.  
  237.            #receiptdir is,  as you'd  expect, the name  of the directory  in
  238.            which  to put  received files.    If  you do  not define  it,  it
  239.            defaults to #netdir.
  240.  
  241. #define allnet
  242.            This simple  binary switch  tells Fnordadel whether  you want  to
  243.            give  out net  privs to  all  new users.    If  set to  `1',  all
  244.            users will  be given  net privs  when their  account is  created;
  245.            when set to  `0', the Sysop must explicitly grant  net privileges
  246.            individually (see Section  5.2 [User Status Commands],  page 80).
  247.            See  [N]et-save in  Section 3.4  [The Message  Editor], page  52,
  248.            and .E(nter) N(et-message) in Section  3.2.1.1 [Multi-key message
  249.            entry  commands],  page  35,   for  a  description  of  what  the
  250.            possession of net  privs allows a user to  do and how.   See also
  251.            `flipbits.man' for  a description  of a  utility to  set the  net
  252.            privilege flag for all users en masse.
  253.  
  254.  
  255.  
  256. Chapter 8:  Networking                                                   100
  257.  
  258.  
  259.  
  260.  
  261. #define netlog
  262. #define netdebug
  263.            These  two binary  switches set  Fnordadel  defaults for  network
  264.            logging   and  debugging.        If  set   to   `1',   then   the
  265.            logging/debugging  is  automatically  turned  on   when  you  run
  266.            Fnordadel.  See Section 13.2 [Logging and Debugging], page 152.
  267.  
  268. #define zaploops
  269.            This  binary switch  tells  Fnordadel to  enable or  disable  the
  270.            loop-zapper.   The  loop-zapper is used  to control  __vortexes__
  271.            in networked  rooms; that  is, the  phenomenon whereby  erroneous
  272.            backbone  connections  somewhere  along  the  network  result  in
  273.            duplicate messages being sent to your system.   See Section 8.4.3
  274.            [The loop-zapper],  page 115.    Suffice it to  say that  setting
  275.            zaploops to `1' will enable it; to `0' will disable it.
  276.  
  277.            The citadel command  line switch `+zap' is another way  to enable
  278.            the loop-zapper.
  279.  
  280. #define purgenet
  281.            This binary  switch, if set  to `1', tells  Fnordadel to use  its
  282.            message purge  feature on  incoming network traffic,  as well  as
  283.            locally-entered  messages.   For  more information  on the  purge
  284.            feature, see  Section 10.2.10  [Message purging], page  137.   In
  285.            a  nutshell,  the  feature lets  Fnordadel  automatically  delete
  286.            messages from undesireable  users or entire net nodes,  which you
  287.            specify.  Use with caution.
  288.  
  289. #define keepdiscards
  290.            This  binary switch  controls Fnordadel's  treatment of  incoming
  291.            net messages that  are discarded, either by the  loop-zapper (see
  292.            Section 8.4.3 [The loop-zapper], page 115) or  the message purger
  293.            (see above).    If set to  `1', the  flag instructs Fnordadel  to
  294.            keep  discarded messages  in  the #netdir,  for  you to  look  at
  295.            later.   At that time  you may do such  things as delete them  or
  296.            integrate them into the  message base.  See Section 8.2  [The Net
  297.            Menu],  page 104,  for more  details  on the  commands to  handle
  298.            discarded messages.
  299.  
  300.            If the flag is set to `0', messages  discarded by the loop-zapper
  301.            or message-purger are lost forever.
  302.  
  303. #define forward-mail
  304.            Another switch.  If set to `1', it  tells Fnordadel to allow mail
  305.            to be  forwarded through  your system to  others.   If, for  some
  306.            reason, you  want to disallow  mail forwarding, set  forward-mail
  307.            to `0'.  See Section 8.5 [Mail Routing], page 118.
  308.  
  309. #define anonnetmail
  310.            This binary switch, if set to `1', allows  your system to receive
  311.            net-mail  from systems  that are  unknown to  it.    This is  the
  312.            default behavior  of the system.   If  you have unwanted  volumes
  313.            of mail being  dumped on you by  mystery nodes, you can set  this
  314.            parameter to `0'  and Fnordadel will reject netmail  from unknown
  315.            systems thereafter.
  316.  
  317.  
  318.  
  319. Chapter 8:  Networking                                                   101
  320.  
  321.  
  322.  
  323.  
  324. #define anonfilexfer
  325.            This  binary switch  is like  the one  above,  but controls  file
  326.            transfers with anonymous nodes.  If the flag is  set to `1', file
  327.            transfers to  and from unknown  nodes are permitted.   If set  to
  328.            `0', they are prevented.
  329.  
  330. #define pathalias
  331.            Here's  yet  another   binary  switch;   when  `1',  it   enables
  332.            Fnordadel's  path aliasing  capability.   See  Section 8.5  [Mail
  333.            Routing], page 118.
  334.  
  335. #hub       This is a string variable which should be set  to the nodename of
  336.            the system to which undeliverable mail is  to be forwarded (which
  337.            system, hopefully, will  be better equipped to deal with  it than
  338.            yours  is.)   See Section  8.5.3 [Hubbing],  page  120, for  more
  339.            information on #hub.
  340.  
  341. #define ld-cost
  342. #define hub-cost
  343.            These integer variables define the cost,  measured in ld-credits,
  344.            of  using  the  Fnordadel  long-distance  mail  routing  and  hub
  345.            forwarding facilities,  respectively.   Ld-credits  are given  to
  346.            users  by the  Sysop  (see Section  5.2 [User  Status  Commands],
  347.            page 80, for  how to do so),  and control who can send  mail that
  348.            costs you money.
  349.  
  350.  
  351. 8.1.3  Setting up for networking
  352.  
  353.    Networking proceeds in  one of two  ways:  your  system can call  another
  354. one, or  other systems can call  yours.  Usually  you'll do both, for  local
  355. network connections;  for long-distance ones,  you'll want to make  specific
  356. arrangements.  There  are two mechanisms for achieving networking:   events,
  357. and polling.
  358.  
  359.  
  360.  
  361. 8.1.3.1  Network events
  362.  
  363.    If  you  don't know  about  events  yet,  go  read  Chapter  7  [Events],
  364. page  93.   As  they relate  to  networking, events  allow  you to  schedule
  365. network sessions, during  which your BBS will presumably call  other systems
  366. (or be called by other systems) for the sole purpose of networking.
  367.  
  368.    The format of the event definition is laid out in  Section 7.1 [Events in
  369. General], page 93; here we present an example only,  with a couple of points
  370. of note:
  371.  
  372.       #event NETWORK all 3:01 39 ld-net 1
  373.  
  374.    The above line will set up a network event which goes off  at 3:01 in the
  375. morning, lasting  for 39  minutes; it will  be named `ld-net';  and it  will
  376. apply to  network #1.   This  means that  your system will  call only  those
  377. nodes that are part  of net #1 during this session, though calls  *from* all
  378. systems will be accepted.
  379.  
  380.  
  381.  
  382. Chapter 8:  Networking                                                   102
  383.  
  384.  
  385.  
  386.  
  387.    During a  network event,  the BBS  is closed  to the users.    If a  user
  388. connects, he will, after a delay, be shown a message  to the effect of ``The
  389. system will be in net  mode for xx minutes longer; call back later.''   If a
  390. user is logged in before an event is scheduled to go  off, he will be warned
  391. five minutes beforehand that he'd better terminate quickly.   When the event
  392. arrives, he will be booted unceremoniously.
  393.  
  394.    Upon commencing  a net  event,  Fnordadel will  call all  systems in  the
  395. specified net for  which there is outgoing material.   In addition,  you can
  396. configure  things so  that certain  nodes will  be called  whether there  is
  397. work or  not; this is known  as ``polling''.   (Note that this is  different
  398. from #polling,  detailed in Section 8.1.3.2  [Polling], page 102, below;  we
  399. really must change the  terminology...)  See the [F] command in  Section 8.3
  400. [Editing Nodes], page 107.
  401.  
  402.    Note that  the event will  always last the  specified number of  minutes,
  403. whether the BBS has finished  calling systems or not.  Indeed, you  may want
  404. to set up  a net session for the sole  purpose of reserving a time  slot for
  405. other systems  to call  yours.   (As we've mentioned  before, Fnordadel  can
  406. receive network calls at  any time, whether it's in a network event  or not.
  407. But setting up an event ensures that no user will be logged in.)
  408.  
  409.  
  410. 8.1.3.2  Polling
  411.  
  412.    __Polling__,  in this  context, refers  to the  ability  of Fnordadel  to
  413. dynamically enter network mode  whenever there is outgoing work and  the BBS
  414. has been  idle for a set  length of time.   This allows greater  flexibility
  415. than does the network event mechanism.
  416.  
  417.    Essentially, we  must tell  Fnordadel the  time periods  during which  we
  418. want polling to be active; we must also tell it  the required length of idle
  419. time before systems will  be polled.  The syntax of the  #polling definition
  420. is as follows:
  421.  
  422.       #polling <net> <start-time> <end-time> [days]
  423.  
  424. The fields mean:
  425.  
  426. net        The net number to poll (usually 0).
  427.  
  428. start-time
  429.            The time (in 24-hour format) to start polling.
  430.  
  431. end-time   The time to end polling.
  432.  
  433. days       An optional  field which  is either `all',  or a  comma-separated
  434.            list of days, as in `Mon,Wed,Fri'.
  435.  
  436.    Most systems that engage in  any local networking put a fairly  standard
  437. #polling line in:
  438.  
  439.  
  440.  
  441. Chapter 8:  Networking                                                   103
  442.  
  443.  
  444.  
  445.  
  446.       #polling 0 0:00 23:59 all
  447.  
  448.    This causes the BBS to poll network number 0 all day long.
  449.  
  450.    You can also define more than one #polling duration; for example,
  451.  
  452.       #polling 1 4:00 20:00 all
  453.       #polling 2 20:01 3:00 all
  454.  
  455. will cause  net #1 to be  polled from 4AM  to 8PM, and  net #2 to be  polled
  456. from 8:01PM to 3AM.
  457.  
  458.    If you've  got  any #polling  defined,  you'll also  want to  define  the
  459. variable poll-delay.   This is the length of time, measured in  minutes, for
  460. which the BBS  must be idle before Fnordadel  will start polling.   A decent
  461. value (or, at least, what we use) is around 15 minutes.
  462.  
  463.  
  464. 8.1.3.3  Summary of network events and polling
  465.  
  466.    Most systems that engage  in only local networking find that  #polling is
  467. perfectly adequate for  decent propagation times; setting up  network events
  468. is usually  unnecessary.   Of  course, if  you've got  users calling  within
  469. 30 seconds  after the  previous one  hangs up,  you won't  get much  polling
  470. done; but  we've never seen a system  that doesn't have idle time  scattered
  471. throughout the day.
  472.  
  473.    If you  do  any long-distance  networking, you'll  probably  want to  use
  474. a mixture  of network  events for  the long-distance stuff  and polling  for
  475. the local  stuff.   It  would be  distinctly unwise  to set  up polling  for
  476. nets containing  long-distance systems;  you don't  want your board  calling
  477. cross-country every time  someone enters a message in the  applicable shared
  478. rooms,  do you?    Instead, set  up an  event during  the wee  hours of  the
  479. morning, and  get all  the long-distance networking  done then.   You  might
  480. want to  coordinate things with  your long-distance connection;  if both  of
  481. you jump into a network event at the same time, things will go quicker.
  482.  
  483.  
  484.  
  485. 8.1.3.4  Special keys in network events
  486.  
  487.    There are a  couple of special keys that  you can hit while Fnordadel  is
  488. in a  network event  to make  it do things.    You can use  these only  when
  489. Fnordadel isn't in the middle of an actual net call.
  490.  
  491.  
  492. `^Z'       __Take  Fnordadel to  the background__.    If  you run  Fnordadel
  493.            under some sort  of multitasker, hitting `^Z' while in  a network
  494.            event  causes  the same  thing  as  when  you hit  it  any  other
  495.            time---it causes  Fnordadel to  drop into  the background.    See
  496.            Section 13.6 [Multitasking and Fnordadel], page 165.
  497.  
  498. `Q'        __Quit Fnordadel__.    Hitting `Q'  while in a  net event  causes
  499.            Fnordadel to  exit completely,  after confirmation.    This is  a
  500.            good  way to  stop the  system from  calling those  long-distance
  501.            systems 100 times during the day.
  502.  
  503.  
  504.  
  505. Chapter 8:  Networking                                                   104
  506.  
  507.  
  508.  
  509.  
  510. 8.1.4  Related parameters
  511.  
  512.    There  are  a  few  other  parameters  that  aren't  strictly  networking
  513. parameters,  but  which will  cause  you  networking grief  if  they  aren't
  514. defined properly.   They have  to do with your  modem; see Chapter 6  [Modem
  515. Stuff], page 86, for detailed descriptions.  Ones to watch:
  516.  
  517.       #define usa
  518.       #define local-time
  519.       #define ld-time
  520.  
  521.  
  522.  
  523. 8.2  The Net Menu
  524.  
  525.    The Net menu  hides under the Sysop menu,  which is reachable by  hitting
  526. `^L'  at a  room  prompt.    (See  Section  5.1 [Sysop  Special  Functions],
  527. page 75, for  more on Sysop commands.)   If you hit `N' at the  `sysop cmd:'
  528. prompt, you'll  be in the  Net menu, from  which you can  choose one of  the
  529. following commands:
  530.  
  531.       [A]dd node
  532.       [D]iscarded messages
  533.       [E]dit node
  534.       [F]orce poll to node
  535.       [P]oll network
  536.       [R]equest file
  537.       [S]end file
  538.       [V]iew net list
  539.       e[X]it to sysop functions
  540.  
  541. [A]dd node
  542.            This command allows  you to add new  nodes to your net-list;  you
  543.            must add a node  to your net-list before you can  send *anything*
  544.            to it.
  545.  
  546.            You will first  be asked for the  node's name; type its  nodename
  547.            (the hopefully  short name  by which  the other  node is  known.)
  548.            If  the system  is  a Citadel-86,  it  probably  has a  long  and
  549.            twisted name,  so make sure you've  got it spelled correctly,  or
  550.            things like  mail routing, auto-reply  to incoming net-mail,  and
  551.            other stuff won't work  quite right.  Names will never  exceed 19
  552.            characters, in  any case.   Then, it'll ask  you for the node  ID
  553.            of the  new system.    This is the  node's phone  number; it  is,
  554.            obviously, vitally important to get this right.   It should be in
  555.            the same format as your own #nodeid  (see Section 8.1.1 [Required
  556.            parameters], page 96).
  557.  
  558.            Next,  you'll be  queried about the  baud rate  supported by  the
  559.            new node;  enter the  standard baud  rate code (`0'  is 300,  `1'
  560.            is  1200, `2'  is 2400,  `3' is  9600  and `4'  is 19200).    Use
  561.            the  highest baud  rate  supported by  the  other node,  even  if
  562.            it is  higher than  the highest  baud rate  that yours  supports.
  563.            Fnordadel is smart  enough to pick the  lower of the two when  it
  564.            dials out; and this  way you don't have to edit your  net-list if
  565.            you happen to acquire a faster modem.
  566.  
  567.  
  568.  
  569. Chapter 8:  Networking                                                   105
  570.  
  571.  
  572.  
  573.  
  574.            Lastly,  Fnordadel   will  ask  you  whether  the  system   is  a
  575.            long-distance node or  not.  Make  sure you tell the truth  here;
  576.            this setting  affects a  number of things,  including the  method
  577.            by which  dialout is done.   (See Section 6.2.4.2  [Long-distance
  578.            dialing], page 91.)
  579.  
  580.            The  rest of  the  settings  for the  new  node will  default  to
  581.            (hopefully)  reasonable  values.    In  some  cases  you'll  have
  582.            to  immediately  edit the  node  to  set other  things  like  net
  583.            passwords, Citadel-86 status, and so on.
  584.  
  585. [D]iscarded messages
  586.            This command  gets you  into a  small sub-section  where you  can
  587.            view  and  deal  with incoming  net  messages  that  were  zapped
  588.            or  purged by  your  system, if  you  configured things  to  save
  589.            such  messages.     (See  Section  8.1.2  [Optional  parameters],
  590.            page  98,  for the  way  to configure  this;  see  Section  8.4.3
  591.            [The  loop-zapper], page  115,  for details  on the  loop-zapper;
  592.            and  see  Section  8.1.2  [Optional  parameters],  page  98,  and
  593.            Section 10.2.10 [Message  purging], page 137, for details  on the
  594.            message  purge feature.)    After hitting  `D',  the system  will
  595.            either tell you there are no discarded messages,  or it will tell
  596.            you the  number of discarded  messages, show  you the first  one,
  597.            and then give you the following prompt:
  598.  
  599.                  [A]gain, [D]elete, [I]ntegrate, [N]ext, [S]top:
  600.  
  601.            [A]gain    Redisplay the current message and prompt again.
  602.  
  603.            [D]elete   Delete the current  discarded message, if you  confirm
  604.                       your  desire  to  do  so,  and  advance  to  the  next
  605.                       discarded message, if there is one.
  606.  
  607.            [I]ntegrate
  608.                       This is the  interesting command.  If you  confirm the
  609.                       action, this tells Fnordadel to  integrate the current
  610.                       discarded message into your message base  as though it
  611.                       had never  been zapped or purged.   It will be  passed
  612.                       along to any  backbone systems sharing the room,  just
  613.                       as it normally would have been.
  614.  
  615.                       You  might run  into  difficulty  if the  message  was
  616.                       in a  room that no  longer exists  on your system,  or
  617.                       whose name  has been  changed.   The same  is true  if
  618.                       the message  came from  an STadel  or derivative,  and
  619.                       the  room is  aliased there  to  something other  than
  620.                       the name  in use  on your  system, or if  the room  is
  621.                       aliased to  a different name  on your own system  (see
  622.                       Section 8.4.4 [Shared  room aliasing], page 117).   In
  623.                       any of these cases, Fnordadel won't know  where to put
  624.                       the message  now, so  it will ask  you if placing  the
  625.                       message in the Aide>  room is okay.  Once  it's there,
  626.                       you can move it.   If you don't okay the  placement in
  627.                       Aide>, nothing is done.
  628.  
  629.  
  630.  
  631. Chapter 8:  Networking                                                   106
  632.  
  633.  
  634.  
  635.  
  636.                       If  the  message is  successfully  integrated  into  a
  637.                       room, you  will be asked  if the discard message  file
  638.                       should be deleted,  and then shown the  next discarded
  639.                       message,  if  there  is  one.     If  the  message  is
  640.                       not integrated,  you will be  returned to the  discard
  641.                       prompt.
  642.  
  643.            [N]ext     Take you  to the next discarded  message, if there  is
  644.                       one.
  645.  
  646.            [S]top     Stop the discard message processing and  return you to
  647.                       the net commands menu.
  648.  
  649. [E]dit node
  650.            This  command takes  you to  the net  node edit  sub-menu.    See
  651.            Section 8.3 [Editing Nodes], page 107, for an in-depth look.
  652.  
  653. [F]orce-poll node
  654.            This is a quickie command for forcing Fnordadel  to make a single
  655.            net call to another system.  Supply a  system name, and Fnordadel
  656.            will call the system regardless of  traffic pending, receive-only
  657.            status, l-d status or anything else.
  658.  
  659. [P]oll network
  660.            This  command  allows  you  to  force  a  one-time  poll  of  the
  661.            specified network.    If anyone is  logged in at  the time,  they
  662.            will be immediately terminated (with extreme  prejudice, we might
  663.            add) and Fnordadel will  call all nodes in the specified  net for
  664.            which there is work.
  665.  
  666. [R]equest file
  667.            Use  this command  when you  wish  to get  some files  from  some
  668.            system with  which you  network directly.   You'll  be asked  for
  669.            the system  from which to  request files, the  room on the  other
  670.            system from which  to get them, the  filename(s) to get, and  the
  671.            directory on  your system in which  to place the received  files.
  672.            The room  on the other system  must be ``network readable''  (see
  673.            Section 8.4.1 [How  to share a room],  page 112) for the  request
  674.            to work.   You may  use wildcards (`*'  and `?') in the  filename
  675.            specification.
  676.  
  677.            The  file request  will  be  spooled for  later;  the  next  time
  678.            your system  connects with  the other  one, the  request will  be
  679.            made  and, if  the other  system can  oblige, the  files will  be
  680.            transferred.
  681.  
  682.            Note that  it is  possible to  request files from  a system  with
  683.            which you have not previously networked.  Simply  add the node to
  684.            your net-list  in the standard manner,  and `[R]equest' the  file
  685.            as usual---the other node doesn't have to know about  yours.  (We
  686.            use this  in the distribution  of Fnordadel;  any other node  can
  687.            call us and request new versions, assuming they  know the name of
  688.            the room and the filenames.  See  Appendix A [Fnordadel Support],
  689.            page 170.)
  690.  
  691.  
  692.  
  693. Chapter 8:  Networking                                                   107
  694.  
  695.  
  696.  
  697.  
  698. [S]end file
  699.            This  command allows  you  to send  a  file or  files to  a  node
  700.            with  which you  network  directly.    You'll  be asked  for  the
  701.            target node name and the name(s) of the file(s)  to transfer; you
  702.            should provide  the full path-spec,  and wildcards (`*' and  `?')
  703.            are  permitted.   The sendfile  will be  spooled for  later;  the
  704.            next time your  system connects with the other one,  the sendfile
  705.            will be made, subject to space availability  on the other system.
  706.            If there  wasn't enough  space, the  other node will  say so  and
  707.            you'll get a message in  Aide> to this effect.  You will  have to
  708.            re-enter the  send command once  the remote system has  corrected
  709.            its space problems.
  710.  
  711. [V]iew net list
  712.            This prints out a nicely formatted list of all  the nodes in your
  713.            net-list.  The format is as follows:
  714.  
  715.                  * sysname              CA 403 432 1098      CRMF  2400 0,1
  716.                  ^       ^               ^                    ^      ^   ^
  717.                  |        \              |                    |      |   |
  718.                  "need     the name of   the nodeId      various   baud  |
  719.                  to call"  the node     (phone number)    flags    rate  |
  720.                   flag                                                   |
  721.                                                                          |
  722.                                              nets to which the node belongs
  723.  
  724.            The  ``various  flags''  may  consist  of  one  or  more  of  the
  725.            following:
  726.  
  727.            `C'        The system is a Citadel-86
  728.  
  729.            `R'        The  system is  receive-only (i.e.,  your system  will
  730.                       never call it)
  731.  
  732.            `M'        There is mail pending
  733.  
  734.            `F'        There are file sends/requests pending
  735.  
  736.            The  ``need to  call''  flag (the  leading asterisk)  appears  if
  737.            there is  any work  pending for the  node; it  doesn't mean  that
  738.            your system will  call the node, because  the node may be set  to
  739.            receive-only.  (See Section 8.3 [Editing Nodes], page 107.)
  740.  
  741. e[X]it to sysop functions
  742.            This should be blatantly obvious.
  743.  
  744.  
  745.  
  746. 8.3  Editing Nodes
  747.  
  748.    There is a sub-menu under the Net menu (which is  itself a sub-menu under
  749. the Sysop  menu;  see Section 8.2  [The Net  Menu], page  104) which  allows
  750. you to  edit various things  pertaining to  nodes in your  net-list.   Nodes
  751. must obviously  be added to the  list before they  can be edited, using  the
  752. [A]dd node command;  again, see Section 8.2 [The  Net Menu], page 104.   The
  753. commands on the node edit menu are as follows:
  754.  
  755.  
  756.  
  757. Chapter 8:  Networking                                                   108
  758.  
  759.  
  760.  
  761.  
  762.       [A]ccess setting
  763.       [B]aud setting
  764.       [C]- set receive-only status
  765.       L[D] role reversal
  766.       [E]xternal dialer setup
  767.       [F]- set polling days
  768.       [I]D change
  769.       [K]ill node from list
  770.       [L]ocal setting
  771.       [N]ame change
  772.       [P]assword settings
  773.       [R]ooms shared
  774.       [T]oggle Cit-86 status
  775.       [U]se nets
  776.       [V]iew node configuration
  777.       e[X]it net editing
  778.       [Z]- set l-d poll count
  779.  
  780. [A]ccess setting
  781.            An  access  string is  an  alternate  way of  dialing  a  system.
  782.            Normally,  the dial  command for the  modem is  formed by  taking
  783.            the last  seven digits  of the  node ID (for  local systems),  or
  784.            the full ten digits,  i.e., including the area code,  prefixed by
  785.            a `1' (for  long-distance systems), and sandwiching  this between
  786.            the dial  prefix and  the dial suffix.    (This all assumes  that
  787.            you've  got #usa  defined in  `ctdlcnfg.sys';  see Section  6.2.4
  788.            [Dialing out], page 90, for more on this stuff.)
  789.  
  790.            But if  you specify an  access string,  Fnordadel forgets all  of
  791.            the  above, and  simply  spits the  access  string at  the  modem
  792.            (still sandwiched  between the dial  prefix and  suffix.)   You'd
  793.            use  this  if you're  dialing  a  country other  than  Canada  or
  794.            the  USA, for  instance,  or if  you're  dialing a  system  which
  795.            is  long-distance but  within your  area-code.   (Some  telephone
  796.            systems don't  like it if  you dial 1-areacode-number within  the
  797.            areacode.)  Because  the string is used as-is, you can  embed any
  798.            special dialing  commands that your modem  supports, like `,'  to
  799.            pause the dial or whatever.
  800.  
  801.            The access string  is also used as a  command line to pass  to an
  802.            external  dialer that you  may have  set up  for this  node;  see
  803.            below.
  804.  
  805. [B]aud setting
  806.            This allows you to  change the node's baud rate.   The acceptable
  807.            values here are the  same as elsewhere in Fnordadel:  `0'  is 300
  808.            baud; `1' is 1200  baud; `2' is 2400 baud; `3' is 9600  baud; and
  809.            `4' is  19200 baud.   Note that Fnordadel  will never attempt  to
  810.            call out  at a baud rate higher  than the highest rate  supported
  811.            on your system; so it's perfectly safe to list  a system at 19200
  812.            baud if you're  only running on a 2400  baud modem; one day,  you
  813.            too may have a  19200 baud modem, and when you do, your  BBS will
  814.            be ready for it!
  815.  
  816.  
  817.  
  818. Chapter 8:  Networking                                                   109
  819.  
  820.  
  821.  
  822.  
  823. [C]- set receive-only status
  824.            A  node  can  be  set  to  __receive-only__,   which  means  that
  825.            Fnordadel  will never  dial out  to  it, even  if  there is  work
  826.            pending for  that system---you'll  have to wait  until the  other
  827.            system calls yours.
  828.  
  829.            If you're entering nodes into your net-list  for the sole purpose
  830.            of dialing  out to them  manually using the [T]elephone  command,
  831.            (i.e.,  they aren't Citadels),  then set  receive-only status  to
  832.            prevent an accidental network callout.
  833.  
  834. L[D] role reversal
  835.            This  is  somewhat  of   an  outdated  command;  it   allows  you
  836.            to  specify whether  role-reversal will  be  performed with  this
  837.            (presumably long-distance)  system.  It  defaults to Yes, so  you
  838.            should never have to muck with it.
  839.  
  840. [E]xternal dialer setup
  841.            Fnordadel allows  you to define an  external dialer for each  net
  842.            node; that  is, a program which will  do the work of  dialing and
  843.            connecting with the system.   The main use for this is  if you're
  844.            using some sort of service like PC-Pursuit,  or a packet-switched
  845.            network,  or whatever.    When using  this command,  specify  the
  846.            external dialer  number; Fnordadel expects  to find the  external
  847.            dialer programs in  your #netdir, named `dial_n.prg', where  n is
  848.            the dialer  number.   If you  have an external  dialer set for  a
  849.            node, it will use  the access string as the command tail  to pass
  850.            to the dialer.
  851.  
  852.            So, say  you're using  PC-Pursuit.   You've taken the  PC-Pursuit
  853.            dialer program  and put it  in #netdir as  `dial_1.prg'.   You've
  854.            set the external dialer  (using the [E] command) to "1".   You've
  855.            set the  [A]ccess string to  `-x foobar'.   When Fnordadel  dials
  856.            this node,  it will run the  program so:  `#netdir\dial_1.prg  -x
  857.            foobar'.   When the  dialer program finishes,  there should be  a
  858.            carrier present  and the baud  rate should  be set up  correctly,
  859.            assuming the  call connected.   Fnordadel will then proceed  with
  860.            networking as normal.
  861.  
  862. [F]- set polling days
  863.            Despite the  fact that this command  has the word ``polling''  in
  864.            it, it  in fact has nothing to  do with #polling (the ability  to
  865.            make net  calls at  any time.)    Rather, this  command lets  you
  866.            specify the  days on which the net  node will be called  *whether
  867.            there is  work pending  or not*.    The calls  will still  happen
  868.            only during applicable network events.  This  allows you to, say,
  869.            regularly call  a long-distance  network feed to  pick up  stuff,
  870.            even when there is no outgoing work pending.
  871.  
  872.            The format  of the  days specification  is any  of `Mon',  `Tue',
  873.            `Wed', `Thu',  `Fri', `Sat' and `Sun',  separated by commas.   So
  874.            `Mon,Wed,Sat' is  a valid  specification.   (This  format is  the
  875.            same as  that used in  the #event and  #polling definitions;  see
  876.            Section 8.1 [Networking Configuration], page 96.)
  877.  
  878.  
  879.  
  880. Chapter 8:  Networking                                                   110
  881.  
  882.  
  883.  
  884.  
  885. [I]D change
  886.            When a  system with which you  network changes its phone  number,
  887.            you'll have  to make  the change  in your net-list,  and this  is
  888.            how.  Just enter the standard node ID format:
  889.  
  890.                  <country> <area code> <number>
  891.  
  892.            as in `CA 403 425 1779'.
  893.  
  894.            Note that if you change the node ID of  a system, the loop-zapper
  895.            records for that node will be invalidated.   The loop-zapper will
  896.            pick up  the change as a  matter of course  (it will look like  a
  897.            new system,  as far  as the  loop zapper is  concerned), so  this
  898.            isn't a problem or anything.
  899.  
  900. [K]ill node from list
  901.            This  command will  remove a  node from  your net-list.    Simply
  902.            type its name; Fnordadel will ask you  for confirmation before it
  903.            kills the node.
  904.  
  905.            Currently  Fnordadel does  not unshare  all the  rooms that  this
  906.            system was  sharing; you  must do so  manually before using  this
  907.            command,  or things  may  screw up  later  on.   (Edit  the  room
  908.            and type  `U'; see Section  4.2.1 [Sysop room-editing  commands],
  909.            page 70,  and Section  8.4.1 [How  to share a  room], page  112.)
  910.            The confirmation  prompt will remind  you of  this fact, in  case
  911.            you forgot.
  912.  
  913. [L]ocal setting
  914.            This  command is  for telling  Fnordadel whether  this system  is
  915.            long-distance (i.e.,  out of your  local calling area) or  local.
  916.            You do want to be accurate with this; don't fib.
  917.  
  918. [N]ame change
  919.            If the  node has changed  its nodename, you'll  want to make  the
  920.            corresponding change in your net-list to  keep everything working
  921.            smoothly.  Just type in the new name.
  922.  
  923. [P]assword settings
  924.            If you suspect security problems when networking  with this node,
  925.            then set  the passwords.   They  must be agreed  upon by you  and
  926.            the other  Sysop beforehand.    You'll define  the password  that
  927.            your system  uses when calling  the other  one, and the  password
  928.            that your system should expect from the other  when it calls you.
  929.            They may  be the  same, though  for optimum  security you'd  want
  930.            them different.
  931.  
  932.            Please note that  Citadel-86 systems use a different form  of net
  933.            passwords, and therefore  you must tell Fnordadel that  this node
  934.            is a  Cit-86, or passwords  will not work.   See [T]oggle  Cit-86
  935.            status, below.
  936.  
  937. [R]ooms shared
  938.            This command prints out  a list of the rooms that your  system is
  939.            sharing with  this node.   Rooms  with messages  that need to  be
  940.            sent to the node are flagged with an asterisk.
  941.  
  942.  
  943.  
  944. Chapter 8:  Networking                                                   111
  945.  
  946.  
  947.  
  948.  
  949. [T]oggle Cit-86 status
  950.            Actually,  it's not a  toggle, but  [C] was  taken.   Anyway,  if
  951.            the  node is  a  Citadel-86  system,  you should  tell  Fnordadel
  952.            so  by  using  this  command.     The  value   of  this  flag  is
  953.            checked for things like file requests,  network protocol changes,
  954.            and  net passwords,  so  it  is essential  to  turn the  flag  on
  955.            for  Citadel-86es.    Note that  direct Cit-86  derivatives  like
  956.            Citadel-68k for  the Amiga are  functionally identical to  Cit-86
  957.            (as far  as networking goes)  so you must turn  this flag on  for
  958.            them as well.
  959.  
  960. [U]se nets
  961.            Fnordadel uses  the concept  of __net numbers__  to form  logical
  962.            groups of  systems.  When  you first enter  a net node into  your
  963.            net-list, it  defaults to being a  member of net  number 0.   But
  964.            you  can set  it up  so  that it's  a part  of  a different  net,
  965.            or several  nets at once---valid  net numbers are  from 0 to  31.
  966.            These net  numbers are referred  to in network event  definitions
  967.            (a node must  be part of the net  to which the net  event applies
  968.            for Fnordadel to call  the node during the event) and  in polling
  969.            (which applies to specific  net numbers).  You may also  remove a
  970.            node from all nets;  this has the effect of removing it  from the
  971.            standard list  of valid net  nodes printed out  when a user  hits
  972.            `?' when asked for the target system of a  piece of net-mail; and
  973.            also removes it  from consideration when the system is  trying to
  974.            route net-mail (see Section 8.5.2 [Path aliasing], page 119).
  975.  
  976.            The format  of the [U]se  nets specification is  as follows:   To
  977.            add a  node to some nets  while preserving the current  settings,
  978.            use  `+netlist'.     To  remove  a  node  from  some  nets,   use
  979.            `-netlist'.   To  specify a  totally new  set of  nets, just  use
  980.            netlist.  What's a  netlist, you ask?  It's just a series  of net
  981.            numbers delimited by commas or spaces.  For  example, if the node
  982.            is currently in  net 0 and 2,  and you wish to  add it to net  5,
  983.            type `+5' when asked for  the nets you want to use.  To  remove a
  984.            node from net 0 (the default net), type `-0'.
  985.  
  986. [V]iew node configuration
  987.            This command  prints a  quick summary  of the  settings for  this
  988.            node.
  989.  
  990. e[X]it net editing
  991.            This exits back to the Net menu.
  992.  
  993. [Z]- set l-d poll count
  994.            You can  tell Fnordadel how many times  you'd like it to  attempt
  995.            to call  an l-d system  during an event  before giving up,  hence
  996.            this  command.     Normally  the  system  will  be  called  until
  997.            Fnordadel obtains  a carrier, and then  will not be called  again
  998.            during that session,  whether the call was a complete  success or
  999.            not.   This command  overrides that; just  specify the number  of
  1000.            calls.
  1001.  
  1002.  
  1003.  
  1004. Chapter 8:  Networking                                                   112
  1005.  
  1006.  
  1007.  
  1008.  
  1009. 8.4  Roomsharing
  1010.  
  1011.    For most systems,  the primary purpose of  networking is to share  rooms.
  1012. Rooms designated  as shared (or  ``networked'') by the  Sysop will have  all
  1013. messages entered in  them sent to the systems  with which he has  shared the
  1014. room;  the other systems  have, presumably, set  up the  same thing, and  so
  1015. you end  up with a sort  of super-room spanning several  BBSes.  (There  are
  1016. zillions of  little exceptions and  modifications to the above  description,
  1017. which we'll let you discover for yourself.)
  1018.  
  1019.  
  1020. 8.4.1  How to share a room
  1021.  
  1022.    To make a room shared, you  need to edit the room.  This  is accomplished
  1023. by .A(ide) E(dit) while  in the room in question; you must have  Aide status
  1024. (and  be logged  in, naturally)  to use  this.    In this  menu you'll  find
  1025. a few  useful commands, detailed  here.   (For more on  the room edit  menu,
  1026. see Section 4.1.2 [The  .A(ide) command], page 63, and Section  4.2.1 [Sysop
  1027. room-editing commands],  page 70.   These are the commands we're  interested
  1028. in here:
  1029.  
  1030.       [S]hared
  1031.       [U]nshare
  1032.       [Y]- toggle backbone status
  1033.       [N]et readable
  1034.       [Z]- autonetted room
  1035.       [P]ermanent
  1036.  
  1037. [S]hared   Use this command  to make a room  shared to start with, and  also
  1038.            to add new  systems to the shared list  for this room.   When you
  1039.            hit `S'  you'll be  asked if you  want to  make the room  shared;
  1040.            answering ``no'' will make the room not shared  and return to the
  1041.            menu.   (If the  room was shared  before, it  will still be  made
  1042.            unshared, but no  nodes will be removed from the shared  list for
  1043.            the room.  This may cause strange behavior, so be careful.)
  1044.  
  1045.            If  you answer  ``yes'', Fnordadel  will ask  for a  list of  net
  1046.            nodes with  which to  share the  room.   Typing a  `?' will  list
  1047.            the choices available to  you; systems must be in  your net-list,
  1048.            obviously, before you can  share a room with them.   Simply enter
  1049.            the name(s) of the nodes, one at a time,  with which to share the
  1050.            room,  and enter  a `<CR>' with  no node  name at  the prompt  to
  1051.            finish.
  1052.  
  1053. [U]nshare  Use this command to  remove one or more systems from  the sharing
  1054.            list for this  room.  Simply type  their name(s), one at  a time,
  1055.            and finish  with a `<CR>'  at the prompt.   If  you want to  make
  1056.            the room completely unshared, i.e., not a  network room any more,
  1057.            use this command to disable each node  currently connected to the
  1058.            room.   Then  use [S]hare,  and answer  ``no'' to  make the  room
  1059.            non-networked.
  1060.  
  1061. [Y]- toggle backbone status
  1062.            This command lets you  turn backboning on or off for one  or more
  1063.            nodes with  which the room  is being shared.   See Section  8.4.2
  1064.            [Topography and backboning], page 113, for more on backboning.
  1065.  
  1066.  
  1067.  
  1068. Chapter 8:  Networking                                                   113
  1069.  
  1070.  
  1071.  
  1072.  
  1073. [N]et readable
  1074.            This command tells Fnordadel whether files can  be requested from
  1075.            this room  over the network.   It  has no effect  if the room  is
  1076.            not a directory room,  obviously.  If you set the room to  be not
  1077.            network readable,  then any and all  file requests for this  room
  1078.            will be refused.
  1079.  
  1080. [Z]- autonetted room
  1081.            In a  normal shared room,  messages are  only saved as  Networked
  1082.            messages if the  authors have net privileges; this can,  however,
  1083.            be  overridden using  the __autonet__  feature.    If a  room  is
  1084.            autonet, all  messages entered in it  are saved as net  messages,
  1085.            regardless.
  1086.  
  1087.            Use  this   with  caution.     Especially   if  the  room  is   a
  1088.            long-distance networked  room, you could be  in for a rude  shock
  1089.            if a ruggie phones  and dumps a load of rubbish  into it---you'll
  1090.            pay to send  it all out over the  net, and all the  other systems
  1091.            sharing the room will likely be very peeved.
  1092.  
  1093. [P]ermanent
  1094.            This is not  strictly a networking option,  per se, but it  rates
  1095.            a mention.   If a room is  shared, you'll likely want to  make it
  1096.            permanent to  stop Fnordadel  from automatically  expiring it  if
  1097.            it empties  of messages.   (Say, if  you haven't managed to  call
  1098.            the feed for  a while, or whatever.)   Other systems tend  to get
  1099.            peeved if  shared rooms  start dropping off  your system  without
  1100.            any advance  warning, since their Aide>  rooms will fill up  with
  1101.            warnings when they attempt to resume sending messages.
  1102.  
  1103.  
  1104. 8.4.2  Topography and backboning
  1105.  
  1106.    The standard  room sharing method,  used for  most local connections,  is
  1107. for every  system carrying a  given room  to share the  room with all  other
  1108. systems carrying it.  This kind of arrangement would look like this:
  1109.  
  1110.  
  1111.               ---NodeA---          Every system is sharing the room
  1112.              /     |     \         with every other system.
  1113.         NodeB------)-----NodeD
  1114.              \     |     /
  1115.               ---NodeC---
  1116.  
  1117.    The main advantage in this setup is that it's quite robust.   If a system
  1118. suddenly  drops off  the net,  it won't  disrupt anything  (topography-wise,
  1119. that is;  people will probably notice,  but it won't necessitate any  change
  1120. in the room sharing method.)
  1121.  
  1122.    However, it's not very  efficient in terms of aggregate time  spent doing
  1123. networking.    Whenever there  are new  messages in  the shared  room,  each
  1124. system has  to call all  the others.   In addition,  this method is  totally
  1125. insane if the  systems are not local to each  other, or if there is  a large
  1126. number of systems sharing the room.  So, backboning was invented.
  1127.  
  1128.  
  1129.  
  1130. Chapter 8:  Networking                                                   114
  1131.  
  1132.  
  1133.  
  1134.  
  1135.    Backboning allows network messages  to be passed on to another  node even
  1136. if they  weren't entered on  your system.   More  specifically, if you  turn
  1137. backboning on for a given system, say foobar, in a  given room, all messages
  1138. received by your system (except from foobar itself, of  course) in that room
  1139. will be sent out  to foobar, in addition to all messages entered  locally on
  1140. your system.
  1141.  
  1142.    What this  does  to the  net map  is allow  much  greater flexibility  in
  1143. connections.  First,  here is an example which employs a central  hub system
  1144. with lots of little ``spokes'':
  1145.  
  1146.             NodeI  NodeB  NodeC          NodeA shares the room with
  1147.                 \    |    /              all systems, while all the
  1148.                  \   |   /               other systems share the
  1149.         NodeH----NodeA(Hub)----NodeD     room only with NodeA.  NodeA
  1150.                  /   |   \               turns backboning on for all
  1151.                 /    |    \              systems; the other systems
  1152.             NodeG  NodeF  NodeE          do not use backboning.
  1153.  
  1154.    This arrangement will basically shift the bulk of the net  load to NodeA.
  1155. The  other nodes  will  not know  that  any  backboning is  going  on;  they
  1156. will simply  share the  room in  the standard  manner with  NodeA. NodeA  is
  1157. responsible for  passing all of  the other systems' messages  on to all  the
  1158. other systems by turning on backboning.
  1159.  
  1160.    This  works  pretty  well  in  local  situations,  and  in  long-distance
  1161. situations  where the  cost of  calling  NodeA is  not much  different  than
  1162. calling any  one of the other  nodes.   No node is  ever more than two  hops
  1163. away from any other, and so propagation times are good.
  1164.  
  1165.    In local  situations you  might want  to use this  arrangement to  reduce
  1166. the aggregate  time spent  in net  mode by  concentrating it  on NodeA;  the
  1167. other systems will  only have to make one  net call every time  new messages
  1168. are entered,  instead of  many calls.   However,  you've probably noticed  a
  1169. drawback---if NodeA  ever disappears, the sharing  scheme has to be  redone,
  1170. possibly by promoting one of the other systems to be the hub.
  1171.  
  1172.    In long-distance situations, there are often more  cost-effective ways of
  1173. arranging things.  Here's another example:
  1174.  
  1175.         NodeC                NodeH          Nodes B, C, F, G and H
  1176.           \                   /             share as normal;
  1177.            \                 /              Nodes A, D, and E flag
  1178.           NodeA---NodeD---NodeE---NodeG     all other systems as
  1179.            /        |                       backboned.
  1180.           /         |
  1181.         NodeB     NodeF
  1182.  
  1183.    This arrangement allows NodeG, for example, to net with  NodeE instead of
  1184. a (possibly  more distant) hub  like NodeD. It  allows Nodes A,  B and C  to
  1185. rely on NodeD  for their feed (we  assume in this example  that A, B, C  and
  1186. D are  all local to each  other.)  (In  this case, it  would be nice if  the
  1187. Sysops of A, B and C helped with NodeD's phone bill.)
  1188.  
  1189.  
  1190.  
  1191. Chapter 8:  Networking                                                   115
  1192.  
  1193.  
  1194.  
  1195.  
  1196.    There are  many variations  on the above  examples; the  guiding rule  is
  1197. that if you wish  to pass messages on to another system, turn  backboning on
  1198. for that system.   But be *very very* careful that loops are  not introduced
  1199. in the net topography, or you'll have a ``vortex''.
  1200.  
  1201.               NodeC         NodeH          Nodes B, C, F, G and H
  1202.                /\            /             share as normal;
  1203.               /  \          /              Nodes A, D, and E flag
  1204.           NodeA--NodeD---NodeE---NodeG     all other systems as
  1205.            /       |                       backboned.
  1206.           /        |
  1207.         NodeB    NodeF
  1208.  
  1209.    This modification of  the previous example  illustrates how a vortex  can
  1210. happen.    NodeA and  NodeD are  each backboning  a  room to  all their  net
  1211. connections.   NodeC incorrectly decides to  share the room with both  NodeA
  1212. and  NodeD. Thus,  every message  entered on  NodeC  is sent  to both  NodeA
  1213. and NodeD.  But because  NodeA and NodeD  backbone the  room to each  other,
  1214. they also  send all  of NodeC's messages  to each  other.   NodeD will  also
  1215. send the  duplicates out to  NodeE, which will propagate  them to its  local
  1216. connections.   This obviously causes a  lot of duplication (and expense,  if
  1217. there  are any  long-distance connections).    To  automatically detect  and
  1218. eliminate this vortex problem, a loop zapper was developed.
  1219.  
  1220.  
  1221.  
  1222. 8.4.3  The loop-zapper
  1223.  
  1224.    With the  advent of backboning  came sloppy  net management.   (Well,  we
  1225. suspect that the sloppy  net management was around before, but it  never had
  1226. such a good opportunity  to manifest itself.)  Anyway, if your  room sharing
  1227. arrangement  has a  loop in  it, you  have what  we  in Edmonton  dubbed a
  1228. __vortex__.   (The term appears  to have gained  national popularity.)   The
  1229. loop-zapper is a brute-force method of stopping vortexes.
  1230.  
  1231.    The way it works is  pretty simple.  Each incoming networked  message has
  1232. in it  the node ID  of the originating  system, the date  and time on  which
  1233. the message was  created, and possibly a  message ID number from the  system
  1234. that originated the message.  Fnordadel keeps a database  in which it stores
  1235. the node IDs of all systems from which it  has ever---directly or indirectly
  1236. through backboning---received a message.
  1237.  
  1238.    For each node ID, Fnordadel  then records the date of the  latest message
  1239. to be received, and what its message ID number was (if  any; STadel does not
  1240. pass along such  information, but Cit-86  and its clones for other  machines
  1241. do,  as does  Fnordadel).   Moreover, this  is done  in each  room in  which
  1242. messages have been  received.  So when  new messages come in, the  node IDs,
  1243. dates, message ID numbers and rooms of the messages  are checked against the
  1244. loop-zapper database.  If a message
  1245.  
  1246.   o is dated  earlier than the  latest one received  in that room from  that
  1247.     node, and
  1248.  
  1249.  
  1250.  
  1251. Chapter 8:  Networking                                                   116
  1252.  
  1253.  
  1254.  
  1255.  
  1256.   o has a lower message ID number than is recorded in the database
  1257.  
  1258. it is assumed to be an old message coming back again,  and will be rejected.
  1259. A message to that effect will be printed on the  screen (and in the net-log,
  1260. if you're keeping one.)
  1261.  
  1262.    To enable  the  loop-zapper, either  define  the `ctdlcnfg.sys'  variable
  1263. zaploops to `1',  or invoke citadel  with the command line argument  `+zap'.
  1264. The loop-zapper  database is  kept in your  #netdir as  `ctdlloop.zap'.   If
  1265. you happen  to delete this  file, you'll have to  reconfigure and start  the
  1266. loop-zapper again.   The loop-zapper will be built as the messages  come in;
  1267. you can also  build a loop-zapper which  reflects your current message  base
  1268. by running the  utility makezt.   The contents of your loop-zapper  database
  1269. may be  viewed by using the  utility scanzt.   See the respective man  pages
  1270. for directions on using these programs.
  1271.  
  1272.    Fnordadel  tries to  be  smart  about detecting  truly  looped  messages,
  1273. versus ones  that are abnormal but  not duplicates.   This is why it  checks
  1274. both the date/time stamp  *and* message ID number of each message,  and only
  1275. rejects those  where both values  are older  than the database  shows.   For
  1276. example, it's  possible for a  glitch or system crash  on another system  to
  1277. cause it  to start sending  you messages with message  ID numbers that  look
  1278. old; but if the dates are new, the messages will  be accepted, not rejected,
  1279. on the assumption that the other system's message ID counter  got reset to a
  1280. value lower than before.
  1281.  
  1282.    Likewise, the clock may have been screwed up on  some other system (e.g.,
  1283. its clock got set to some point in the future,  some messages were sent out,
  1284. and its  clock is  now back  at the  correct value,  or else it  got set  to
  1285. some point  in the past and  hasn't been corrected  yet).  Your  loop-zapper
  1286. database will  thus show a  date/time that  is greater than  the one on  the
  1287. incoming messages, but as long as the messages have  new message ID numbers,
  1288. they will be  accepted, not rejected.   Note that no version of  STadel ever
  1289. sends  the message  ID number,  so the  loop-zapper only  has the  date/time
  1290. stamp to  work with.   Thus  it's easier for  Fnordadel to mistakenly  start
  1291. zapping messages from an STadel, if that node's clock got messed up.
  1292.  
  1293.    The  Fnordadel  loop-zapper database  is  also  self-correcting  to  some
  1294. degree.   When any message is accepted  in a room, both its  date/time stamp
  1295. and message ID  number are recorded as being  the newest ones seen,  even if
  1296. they are lower than what was there before.  In  this way, your database will
  1297. weed out incorrect date/time  values, or message ID numbers.  It  can't weed
  1298. out both  if they occur simultaneously,  though; if  a new message comes  in
  1299. and has  the bad  luck of  having an  old date/time  and an  old message  ID
  1300. number, the loop-zapper will reject it.
  1301.  
  1302.    If you ever have a  node get screwed up and the database doesn't  seem to
  1303. correct itself, the only  way to stop Fnordadel from zapping all  the node's
  1304. messages is to delete your `ctdlloop.zap' file and start from  scratch.  Run
  1305. the makezt utility to  build a new database from your current  message base,
  1306. or just let Fnordadel run and accumulate new information over time.
  1307.  
  1308.    From time  to time,  your system may  incorrectly zap  a small number  of
  1309. messages  from one  or  more nodes,  and  then return  to  normal.    Zapped
  1310. messages  can be  saved  off-line  if you  so  desire (see  keepdiscards  in
  1311. Section 8.1.2 [Optional  parameters], page 98.)   You may then read  through
  1312.  
  1313.  
  1314.  
  1315. Chapter 8:  Networking                                                   117
  1316.  
  1317.  
  1318.  
  1319.  
  1320. them and optionally  delete them permanently or tell Fnordadel  to integrate
  1321. them into your message  base (if they look like they were zapped  in error).
  1322. See  Section  8.2 [The  Net  Menu],  page 104,  for  instructions  on  these
  1323. commands.
  1324.  
  1325.    Although the loop zapper is quite smart, there's currently  one glitch in
  1326. it.  You may  notice that if two identical messages come in during  the same
  1327. network call, the  zapper will let both of them  all through.  Hey,  so it's
  1328. only close to perfect...
  1329.  
  1330.  
  1331. 8.4.4  Shared room aliasing
  1332.  
  1333.    If you don't like  the standard name by which  a shared room is  known on
  1334. the network  and would  like to  have that  room differently  named on  your
  1335. system, you can accomplish this using shared room aliasing.
  1336.  
  1337.    Simply put a file called `alias.sys' in your #netdir.   It should consist
  1338. of `<TAB>'-separated fields as follows:
  1339.  
  1340.       <system> <roomname> <alias>
  1341.  
  1342. <system>   is the  name of  the system to  which the alias  will apply;  the
  1343.            special name `%all' makes the alias apply to  any and all systems
  1344.            with which you share the room.
  1345.  
  1346. <roomname>
  1347.            is the name of the room on your system.
  1348.  
  1349. <alias>    is the name of the room on the other system(s).
  1350.  
  1351.    We actually recommend against  using the aliasing feature  unless there's
  1352. a really  good reason for  doing so.   The standard  room names are  usually
  1353. fine, and more  importantly, it's possible to  alias a room to another  name
  1354. and then share the  room with another system; the Sysop of the  other system
  1355. may not  realise that  the room he's  getting from  you is the  same as  the
  1356. standard net  room and may  decide to  share it with  yet another system  in
  1357. such a  way as to  create a vortex.   So  if you use  this feature, be  very
  1358. careful.
  1359.  
  1360.    Also note  that  if you  are sharing  aliased rooms  with a  system,  and
  1361. change the  name of that system  in your net  list, you must exit  Fnordadel
  1362. and edit  `alias.sys' to  update it  with the  system's new  name.   If  you
  1363. don't, Bad Things will happen.
  1364.  
  1365.  
  1366.  
  1367. 8.4.5  A few hopefully wise words
  1368.  
  1369.   o Be considerate  when sharing or unsharing rooms  with a system.   If you
  1370.     tell another  Sysop to share  a room with you,  make sure you've  shared
  1371.     it with him,  or his Aide> room will be flooded with  messages reporting
  1372.     that your system isn't sharing the room with his.
  1373.  
  1374.  
  1375.  
  1376. Chapter 8:  Networking                                                   118
  1377.  
  1378.  
  1379.  
  1380.  
  1381.   o We've  already mentioned  this, but  it  bears repeating  any number  of
  1382.     times:   Be careful  when using  backboning, and when  sharing rooms  in
  1383.     general.    Make  sure you  understand  the topography  of the  room  in
  1384.     question  before messing about;  you don't  want to cause  a vortex,  do
  1385.     you?  <PROD> No, you don't.
  1386.  
  1387.   o Please try  to police  the net rooms.   This  applies especially to  the
  1388.     national  networked rooms, which  cost people  money to transport.    If
  1389.     you  have a twit  or two who  are entering stupid  messages (or,  worse,
  1390.     ``vandalism''  type of  stuff like  10K of  profanities and  so on),  it
  1391.     is  up to  you to  stomp  on it  as soon  as possible.    Moreover,  you
  1392.     must  also be on  the lookout for  what Citadelians  refer to as  __room
  1393.     drift__; if users on your system start  talking about Pascal programming
  1394.     in a  networked Religion room,  you must put  a stop to  it.  Please  be
  1395.     considerate for your fellow Sysops downstream.
  1396.  
  1397.   o You  should  be aware  that  there  are some  incompatibilities  between
  1398.     systems  descended  from  STadel  and  those   directly  descended  from
  1399.     Citadel-86.    We  are working  on eliminating  them  all in  Fnordadel,
  1400.     and  hope eventually  to make  Fnordadel a  seamless connection  between
  1401.     the  STadel  network and  the  Cit-86 network.     For the  time  being,
  1402.     not  everything works  perfectly.    See  Section 8.6  [Networking  with
  1403.     Citadel-86],  page 121.   As for  normal room  sharing, you should  have
  1404.     only  one real  problem any  more:   Cit-86  messages can  only be  7500
  1405.     characters  long,  while STadel  and  Fnordadel  messages can  be  10000
  1406.     characters long.   Thus long-winded  people posting on your system  will
  1407.     get cut  short if the  messages migrate over  to a Cit-86.   This  could
  1408.     cause some confusion.
  1409.  
  1410.  
  1411.  
  1412. 8.5  Mail Routing
  1413.  
  1414.    Another popular use for the Citadel network is for private mail.   In the
  1415. simplest case,  that of  sending mail to  another user  on the same  system,
  1416. mail delivery is an understandably easy job.  When you  want to send mail to
  1417. a user on  a system which connects directly  with yours, it's also  a pretty
  1418. easy thing.    However, when  you want  to route  mail through  one or  more
  1419. intermediate nodes  before it reaches its  destination, things get a  little
  1420. tricky.  This  section details a few helpful features designed to  make mail
  1421. routing simpler and more effective.
  1422.  
  1423.  
  1424. 8.5.1  Net addresses
  1425.  
  1426.    When you go  to the Mail> room  and hit [E]nter,  the system asks you  to
  1427. tell  it to  whom you  want to  send the  mail.   If  the mail  is going  to
  1428. be  a networked  message, you  have two  ways in  which the  address can  be
  1429. specified.   One is  using `@' notation,  and the other  is using explicit
  1430. __bangpaths__, which have as their distinguishing feature  the `!' character
  1431. as a  separator.   The  two forms  produce identical  results;  it's just  a
  1432. matter of taste, really.
  1433.  
  1434.    The `@' form is as follows:
  1435.  
  1436.  
  1437.  
  1438. Chapter 8:  Networking                                                   119
  1439.  
  1440.  
  1441.  
  1442.  
  1443.       user@system
  1444.  
  1445. which means that  you wish to send  the mail to the  user named user on  the
  1446. node called system.
  1447.  
  1448.    The bangpath form is like this:
  1449.  
  1450.       system!user
  1451.  
  1452. which means the same thing as the previous example.
  1453.  
  1454.    If you want to send mail through several nodes, you'll  have to provide a
  1455. `To:'  address something like this:
  1456.  
  1457.       node_a!node_b!node_c!user ,
  1458.  
  1459. or perhaps
  1460.  
  1461.       node_b!node_c!user@node_a
  1462.  
  1463. As you'll  notice, the `@'  and `!' forms  can be mixed.   The two  examples
  1464. above both  address the  mail to  a user on  `node_c', which  (we happen  to
  1465. know) is reachable by a direct path from our system  to `node_a' to `node_b'
  1466. to `node_c'.
  1467.  
  1468.    Your system may  also receive routed mail  from other systems with  which
  1469. it networks.   If the mail  is destined for a  user on your system, then  it
  1470. is delivered to  that user and the  message stops.   But the message may  be
  1471. addressed to someone on a system further on.  If you  want your system to be
  1472. able to pass such mail on, you'll have to make  sure that the `ctdlcnfg.sys'
  1473. variable #forward-mail  is defined  as `1'.   If  it's `0',  your node  will
  1474. simply reject all routed mail.
  1475.  
  1476.  
  1477. 8.5.2  Path aliasing
  1478.  
  1479.    So, forming net  addresses is easy, right?   But it's  a pain to have  to
  1480. remember explicit addresses through half a dozen other  systems to reach the
  1481. one you  want.   So Fnordadel  allows you to  define, once  and for all  (or
  1482. until you change the  definition), the paths to systems.  Then  when someone
  1483. wants to send mail to someone on such a system, they  need only type a `To:'
  1484. field of  `user@system', and  let Fnordadel  figure out  where `system'  is.
  1485. You can also use the path aliasing feature in  strictly local situations; if
  1486. you have,  say, a Citadel-86  system with a really  weird nodename, you  can
  1487. alias it to something  short and essentially pretend that its name  (for the
  1488. purposes of net mail) has changed.
  1489.  
  1490.    The way it works:  First of all, if you want to  enable the path aliasing
  1491. feature,  you should  define the  `ctdlcnfg.sys' variable  #pathalias to  be
  1492. `1'.   If it's `0',  Fnordadel won't even  bother.   The path alias data  is
  1493. stored  in a  file called  `ctdlpath.sys' in  your #netdir.    When  someone
  1494. enters a message addressed to an unknown node, Fnordadel  looks in this file
  1495. for  an alias  to the  unknown system.    (Note  that ``unknown'',  in  this
  1496. context, means  any system which  is not  in your net-list,  or which is  in
  1497. your net-list and is not  a member of any nets.  See the [U]se  nets command
  1498.  
  1499.  
  1500.  
  1501. Chapter 8:  Networking                                                   120
  1502.  
  1503.  
  1504.  
  1505.  
  1506. in Section  8.3 [Editing Nodes],  page 107.   Also  note that incoming  mail
  1507. from other nodes is subjected to the same treatment;  Fnordadel doesn't care
  1508. whether the  mail is local.)   If  it finds an  address, it will  substitute
  1509. this into the  `To:'  field of the message  and mail the message off  to its
  1510. target.   If the message was local,  there may be special charges  (in terms
  1511. of  ld-credits) which  apply to  the message;  see  Section 8.1.2  [Optional
  1512. parameters], page 98,  on the `ctdlcnfg.sys' variable #ld-cost for  one such
  1513. cost.
  1514.  
  1515.    The `ctdlpath.sys' file consists of `<TAB>'-separated lines of the form:
  1516.  
  1517.       alias path [surcharge]
  1518.  
  1519. where alias  is the nodename being  aliased; path  is a string defining  the
  1520. path to the  node; and surcharge is  an optional number of ld-credits  which
  1521. will be charged to the user for using the aliasing feature.
  1522.  
  1523.    Here is a sample `ctdlpath.sys':
  1524.  
  1525.       devnull `<TAB>' poopsie!%s `<TAB>' 1
  1526.       alberta `<TAB>' dragos!myrias!%s `<TAB>' 2
  1527.       Backfence `<TAB>' Backfence [MN] `<TAB>' 0
  1528.       Silly `<TAB>' Silly_Cit-86_Name[MN] `<TAB>' 10
  1529.  
  1530. The  special  sequence  `%s'  means ``the  destination  node''.     In  this
  1531. example, let's  say we wanted  to mail to `Holly'  at the system  `devnull'.
  1532. We  enter a  `To:'   field of  `Holly@devnull'.    Fnordadel discovers  that
  1533. `devnull' is not in  our net-list, so it reverts to Plan  B---path aliasing.
  1534. Searching  `ctdlpath.sys' for  an entry  for `devnull',  it  finds that  the
  1535. route  to `devnull'  is through  `poopsie';  so it  massages  the path  into
  1536. `poopsie!devnull' (since  the alias specified  `poopsie!%s', and  `devnull',
  1537. the destination system, is  substituted for the `%s').  After  appending the
  1538. user name to the  whole thing, the `To:'  field  is `poopsie!devnull!Holly';
  1539. Fnordadel now  spools the  mail for  delivery to  `poopsie'.   The user  who
  1540. entered the  mail is  charged two  ld-credits---one for the  fact that  it's
  1541. long-distance mail, and one for the surcharge listed in `ctdlpath.sys'.
  1542.  
  1543.    Or,  in the  above example,  if  we wanted  to  send mail  to a  user  on
  1544. `Silly_Cit-86_Name[MN]' and didn't want to make our users  or ourselves type
  1545. that, we'd  simply be able to  give a `To:'   field of `user@silly' and  let
  1546. Fnordadel worry about  it; it would check  the alias file and use  the entry
  1547. therein to massage the `To:'  field to `Silly_Cit-86_Name[MN]!user'.
  1548.  
  1549.  
  1550. 8.5.3  Hubbing
  1551.  
  1552.    What happens if your system  gets mail addressed to an unknown  node, and
  1553. it doesn't have  an alias defined for  that node?   If you have defined  the
  1554. `ctdlcnfg.sys' variable  #hub, then  your system  will have  a last  resort.
  1555. All mail  which cannot be  dealt with either by  direct connection with  the
  1556. target system,  or by  an explicit path  in the message  in which the  first
  1557. node  in the  path is  directly  connected, or  by  path aliasing,  will  be
  1558. forwarded to the system defined as your #hub.   This system (hopefully) will
  1559. be better able  to deal with the mail  than yours was, either because  it is
  1560. connected to more systems directly, or because it has  a more extensive path
  1561. alias file than you have.
  1562.  
  1563.  
  1564.  
  1565. Chapter 8:  Networking                                                   121
  1566.  
  1567.  
  1568.  
  1569.  
  1570.    Mail which is entered locally  and is forwarded to the #hub  for delivery
  1571. can be charged extra  ld-credits based on the setting of  the `ctdlcnfg.sys'
  1572. variable #hub-cost---see Section 8.1.2 [Optional parameters], page 98.
  1573.  
  1574.  
  1575. 8.5.4  Domains
  1576.  
  1577.    Domains are  supported in this  version of Fnordadel,  but in a  somewhat
  1578. superficial manner.   Primarily  for Citadel-86  compatibility, you can  set
  1579. the value  of a `ctdlcnfg.sys' parameter  called #domain, to tell  Fnordadel
  1580. what  Citadel-86-style domain  you are  in.    See Section  8.1.2  [Optional
  1581. parameters],  page 98.    Citadel-86  uses this  field  for domain  mail,  a
  1582. feature Fnordadel does not yet support.
  1583.  
  1584.    We also have some additional domain support.  By  placing lines beginning
  1585. with a  period (`.') character  into `ctdlpath.sys',  we can tell  Fnordadel
  1586. information  about what  other  domains  we are  a  part  of and  about  how
  1587. to  reach other  domains.   For  example,  consider the  following lines  in
  1588. `ctdlpath.sys':
  1589.  
  1590.       .uucp `<TAB>' foobar!%s `<TAB>' 1
  1591.       .citadel
  1592.       .uucp
  1593.  
  1594. These lines define us  to be members of the `.citadel' and  `.uucp' domains;
  1595. in addition,  they specify  that any mail  bound for  the `.uucp' domain  is
  1596. to be  routed through `foobar'  (and to be  charged, in  the local case,  an
  1597. additional ld-credit.)
  1598.  
  1599.    Look for better domain support in later versions.
  1600.  
  1601.  
  1602.  
  1603. 8.6  Networking with Citadel-86
  1604.  
  1605.    Originally developed by Hue,  Jr., back in the early days  of Citadel-86,
  1606. the  Citadel  networker  is a  fairly  flexible  beast.     Indeed,  it  has
  1607. proved so  flexible that numerous  Citadel developers have  mutated it in  a
  1608. variety of  interesting ways.    A major  mutator,  so to  speak, was  David
  1609. Parsons (orc),  who did  STadel, from which  Fnordadel is  descended.   Some
  1610. of the  improvements and changes  resulted in incompatibilities with  Cit-86
  1611. networking.
  1612.  
  1613.    It is our  intention to eliminate or work  around all of these things  at
  1614. some point, hopefully in  the near future.  In order to make  your Fnordadel
  1615. work  as smoothly  as possible  with a  Cit-86,  you should  set the  Cit-86
  1616. status flag for  it in your net  list, and ask its  Sysop to set the  STadel
  1617. status flag  for your  system in  his net  list.   As of  this writing,  the
  1618. following are the areas in which Cit-86 and Fnordadel networking differ:
  1619.  
  1620.   o Mail  routing  has been  done  in remarkably  different  ways.    Cit-86
  1621.     supports STadel-style  mail routing as a  sort of after-hack, but  don't
  1622.     rely on it too  much.  (Similarly, don't tell your local  Cit-86 friends
  1623.     to rely on you too much for mail routing, either.)
  1624.  
  1625.  
  1626.  
  1627. Chapter 8:  Networking                                                   122
  1628.  
  1629.  
  1630.  
  1631.  
  1632.   o Fnordadel  currently has minimal  support for  Cit-86 domains,  although
  1633.     it  will  set the  domain  field on  locally-originating  messages,  and
  1634.     pass  through the  domain  field on  net  messages from  other  systems.
  1635.     See  Section 8.1.2  [Optional parameters],  page 98,  and Section  8.5.4
  1636.     [Domains], page 121.
  1637.  
  1638.   o Cit-86 supports a  networking option to compress network  information on
  1639.     the  fly.   Fnordadel does  not yet support  this facility.   This  will
  1640.     probably  cause you  to see messages  something like  ``Reply BAD:  <10>
  1641.     unknown'' during networking sessions.  This is nothing to worry about.
  1642.  
  1643.   o Cit-86  doesn't use  the #organization  field, or  pass it  on to  other
  1644.     systems that it  nets with, so in backboned shared rooms,  messages from
  1645.     your system will  lose the #organization field the first time  they pass
  1646.     through a Cit-86.
  1647.  
  1648.   o Cit-86 also doesn't support the STadel message subject field.
  1649.  
  1650.   o Cit-86 messages  are limited  to 7500 characters  in size, while  STadel
  1651.     (and  its descendants)  support messages  up to  10000 characters  long.
  1652.     Thus  when your messages  pass through  a Cit-86, they  may get  chopped
  1653.     short.
  1654.  
  1655.    The following are incompatibilities  which we inherited from STadel,  but
  1656. which we have fixed:
  1657.  
  1658.   o The network sendfile/file request methods used to  be different; sending
  1659.     files  to a  Cit-86 would work  (and sendfiles  from the  Cit-86 to  you
  1660.     would also  work), but file  requesting (in either direction)  wouldn't.
  1661.     This is now fixed---everything should work.
  1662.  
  1663.   o Fnordadel  and  Citadel-86  couldn't  use  the  Ymodem  protocol  during
  1664.     netting; they should be able to now.
  1665.  
  1666.   o The network passwords should work fine now.
  1667.  
  1668.    The  following things  are  bits of  funny  business between  Cit-86  and
  1669. Fnordadel, but are harmless:
  1670.  
  1671.   o If  a Cit-86 is  backboning any  rooms to  your system,  you may  notice
  1672.     that  each time  it  nets with  your system,  it  will attempt  to  send
  1673.     each backboned  room, whether or  not there are  any new messages to  be
  1674.     transferred.   (It will send 0 messages,  basically.)  We  can't imagine
  1675.     why  it does  this, but  it seems  to  be normal  and will  not cause  a
  1676.     problem.
  1677.  
  1678.   o There are net  commands that Cit-86 supports but Fnordadel  doesn't, and
  1679.     possibly  vice versa.    In  particular, Cit-86  has  two commands  that
  1680.     Fnordadel doesn't yet know about:  8  (a different form of room-sharing)
  1681.     and  10 (for  data  compression during  networking).    They will  cause
  1682.     messages during networking, such as ``Reply BAD:  <10> unknown'', when a
  1683.     Cit-86 asks your system to carry out such a  command.  These are nothing
  1684.     to worry about.
  1685.  
  1686.  
  1687.  
  1688. Chapter 8:  Networking                                                   123
  1689.  
  1690.  
  1691.  
  1692.  
  1693. 8.7  Interfacing to Other Networks
  1694.  
  1695.    Using the #event mechanism,  custom networking software and  (often) lots
  1696. of system  resources, it  is theoretically possible  to make your  Fnordadel
  1697. talk to just about any  other network in existence.  Of course, most  of the
  1698. custom software has never been written, so it's largely theoretical.
  1699.  
  1700.    STadel  had a  program  called uucall,  which  was  for talking  to  Unix
  1701. machines using  the UUCP protocol,  and allowed  incoming and outgoing  mail
  1702. and News (the Usenet analogue to rooms).  uucall  is not currently supported
  1703. by Fnordadel  (and thus, is  not included with it);  it needs some  hacking.
  1704. If anyone  is strongly  interested in  seeing it running,  let us  know---we
  1705. occasionally need a  bit of encouragement.   Our plans are, tentatively,  to
  1706. redo the  UUCP support using  a different approach, but  the uucall code  is
  1707. there,  and with  a little effort  could be  made to  work---it worked  with
  1708. Fnordadel for  a long  time, and  then broke  when we  changed something  or
  1709. other, and we've just never gone back and fixed it.
  1710.  
  1711.    STadel also had  a program called bixcall,  which was for talking to  the
  1712. Byte  Information eXchange  (BIX). We've  never seen  BIX in  our lives,  so
  1713. we've no way  of testing it at  all.  We can  send a copy to anyone  running
  1714. Fnordadel  and you  can see  if it  works;  there isn't  much we  can do  to
  1715. support it, though.
  1716.  
  1717.  
  1718.  
  1719. 8.8  Country Codes
  1720.  
  1721.    Country codes  are  used in  your #nodeid  (see  Section 8.1.1  [Required
  1722. parameters], page  96; they consist of  one to three letters which  uniquely
  1723. identify your  country.  The  following list is  considered standard; it  is
  1724. purloined directly from `COUNTRY3.MAN', in the Citadel-86 documentation.
  1725.  
  1726.       Abu Dhabi               AH      Afghanistan             AF
  1727.       Ajman (U.A.E.)          JM      Albania                 AB
  1728.       Algeria                 DZ      Andorra                 AND
  1729.       Angola                  AN      Anguila                 LA
  1730.       Antigua                 AK      Argentina               AR
  1731.       Australia               AA      Austria                 A
  1732.       Bahamas                 BS      Bahrain                 BN
  1733.       Bangladesh              BJ      Barbados                WB
  1734.       Belgium                 B       Belize                  BH
  1735.       Bolivia                 BV      Botswana                BD
  1736.       Brazil                  BR      Brunei                  BU
  1737.       Bulgaria                BG      Burma (Union of)        BM
  1738.       Burmuda                 BA      Burundi                 UU
  1739.       Cameroon Republic       KN      Canada                  CA
  1740.       Cayman Islands          CP      Central African Empire  EC
  1741.       Central African Rep.    RC      Chad Republic           KD
  1742.       Chile                   CF      China (People's Rep)    CN
  1743.       Colombia                CO      Congo Republic          KG
  1744.       Cook Islands (Rarotonga)RG      Costa Rica              CR
  1745.       Cuba                    CU      Cyprus                  CY
  1746.       Czechoslovakia          C       Denmark                 DK
  1747.       Djibouti, Rep of        FS      Dominica                DO
  1748.       Dominican Republic      DR      Dubai (U.A.E.)          DB
  1749.  
  1750.  
  1751.  
  1752. Chapter 8:  Networking                                                   124
  1753.  
  1754.  
  1755.  
  1756.  
  1757.       Ecuador                 ED      Egypt, Arab Rep. of     N
  1758.       El Salvador             SAL     Ethiopia                ET
  1759.       Falkland Islands        FK      Faroe Islands           FA
  1760.       Fiji Islands            FJ      Finland                 SF
  1761.       France                  F       French Guiana           FG
  1762.       French Polynesia        FP      Fujairah (U.A.E.)       FU
  1763.       Gabon Republic          GO      Gambia                  GV
  1764.       Germany (Dem. Rep)      DD      Germany (Federal Rep)   D
  1765.       Ghana                   GH      Gibralter               GK
  1766.       Greece                  GR      Greenland               GD
  1767.       Grenada                 GA      Guadeloupe (Fr. Ant.)   GL
  1768.       Guam                    GM      Guatemala               GU
  1769.       Guinea                  GE      Guyana                  GY
  1770.       Haiti                   HC      Honduras                HT
  1771.       Hong Kong               HX      Hungary                 H
  1772.       Iceland                 IS      India                   IN
  1773.       Indonesia               IA      Iran                    IR
  1774.       Iraq                    IK      Ireland, Rep of         EI
  1775.       Israel                  IL      Italy                   I
  1776.       Jamaica                 JA      Japan                   J
  1777.       Jordan                  JO      Korea (South)           K
  1778.       Korea, Dem People's Rep KZ      Kuwait (Persian Gulf)   KT
  1779.       Laos                    LS      Lebanon                 LE
  1780.       Lesotho                 BB      Liberia                 LIB
  1781.       Libya                   LY      Liechtenstein           FL
  1782.       Luxembourg              LU      Macao                   OM
  1783.       Madagascar              MG      Malawi                  MI
  1784.       Malaysia                MA      Maldives                MF
  1785.       Mali                    MJ      Malta                   MT
  1786.       Mariana Islands(Saipan) SA      Martinique (Fr. Ant.)   MR
  1787.       Mauritania, Islam Rep   MTN     Mauritius               IW
  1788.       Mexico                  ME      Monaco                  MC
  1789.       Mongolia                MH      Monterrat               MK
  1790.       Morocco                 M       Mozambique              MO
  1791.       Nauru Islands           ZV      Nepal                   NP
  1792.       Nethelands Antilles     NA      Netherlands             NL
  1793.       New Caledonia           NM      New Hebrides            NH
  1794.       New Zealand             NZ      Nicaragua               NK
  1795.       Nigeria                 NI      Norway                  N
  1796.       Oman (Persian Gulf)     MB      Pakistan                PK
  1797.       Panama                  PA      Papua New Guinea        NE
  1798.       Paraguay                PY      Peru                    PE
  1799.       Philippines             PH      Poland                  PL
  1800.       Portugal/Madeira/Azores P       Qatar (Persian Gulf)    DH
  1801.       Ras Al Khaimah (UAE)    RK      Reunion Islands         RE
  1802.       Rumania                 R       Rwanda                  RW
  1803.       Saint Kitts (WI)        KC      Saint Lucia             LC
  1804.       Saint Pierre + Miquelon QN      Saint Vincent           VQ
  1805.       San Marino              RSM     Saudi Arabia            SJ
  1806.       Senegal                 SG      Seychelles Islands      SZ
  1807.       Sharjah (UAE)           SH      Sierra Leone            SL
  1808.       Singapore               RS      Solomon Islands         HQ
  1809.       Somalia Republic        SM      South Africa            SA
  1810.       South West Africa       WK      Spain / Canary Islands  E
  1811.       Sri Lanka               CE      St Helena               HI
  1812.       Sudan                   SD      Surinam                 SN
  1813.  
  1814.  
  1815.  
  1816. Chapter 8:  Networking                                                   125
  1817.  
  1818.  
  1819.  
  1820.  
  1821.       Swaziland               WD      Sweden                  S
  1822.       Syrian Arab Republic    SY      Taiwan                  TW
  1823.       Tanzania                TA      Thailand                TH
  1824.       Togo                    TO      Tonga                   TS
  1825.       Transkei                TT      Trinidad and Tobago     WG
  1826.       Tunisia                 TN      Turkey                  TR
  1827.       Turks + Caicos Islands  TQ      USSR (Russia)           SU
  1828.       Uganda                  UG      Umm Al Qaiwan (UAE)     QA
  1829.       United Arab Emirates    EM      United Kingdom / N Ire. G
  1830.       United States of Amer.  US      Upper Volta, Rep of     UV
  1831.       Uruguay                 UY      Venezuela               VE
  1832.       Viet Nam                VT      Virgin Islands (Brit)   VB
  1833.       Western Samoa           SX      Yemen Arab Rep. (San'a) YE
  1834.       Yemen, People's Dem Rep AD      Yugoslavia              YU
  1835.       Zaire                   ZR      Zimbabwe                RH
  1836.  
  1837.